package com.kzj.service;

import com.kzj.domain.ElectiveCourse;
import com.baomidou.mybatisplus.extension.service.IService;
import com.kzj.domain.vo.ElectiveCourseVO;
import com.kzj.domain.vo.ExaminationVO;
import com.kzj.domain.vo.ScheduleCourseVO;
import com.kzj.global.re.Result;
import org.springframework.transaction.annotation.Transactional;

import java.time.LocalDate;
import java.util.List;

/**
 * <p>
 *  服务类
 * </p>
 *
 * @author kzj
 * @since 2023-12-01
 */
@Transactional
public interface EletiveCourseService extends IService<ElectiveCourse> {
        public Result addCourse(ElectiveCourse electiveCourse);
        public void preheat(String curriculumTime);
        public Result getSelfSchedule(Integer term,Integer week);
        public Result getSchedule(String id,Integer term,Integer week);
        public Result getElectiveCourseVOByIds(List<String> ids);
        public Result getTotalSchedule(String id,Integer term);
        public Result getElectiveCourseVOByIdAndTerm(String id,Integer term);
        public Result getMeetTheConditionsCourseByMajorIdAndTerm(String majorId,Integer term);
        public Result getSelfMeetTheConditionsCourse();
        public Result getMeetTheConditionsCourseByStudentId(String studentId);
        public ElectiveCourseVO getElectiveCourseVO(ElectiveCourse electiveCourse);
        public List<List<ScheduleCourseVO>> getScheduleCourseVOListList(String studentId, Integer term, Integer week);
        public List<List<ScheduleCourseVO>> getScheduleCourseVOListListByTeacherId(String id,String curriculumTime, Integer week);
        public Result getTeacherScheduleByTeacherIdAndTerm(String teacherId,String curriculumTime);
        public Result getTeacherCurrentTermScheduleByTeacherId(String teacherId);
        public Result getTeacherNextTermScheduleByTeacherId(String teacherId);
        Result getArrangeCourseList(String teacherId, String curriculumTime);
        Result getArrangeCourseList(String teacherId, LocalDate startDate,LocalDate endDate);
        public void addAmountByElectiveCourseVO(ElectiveCourseVO electiveCourseVO);
//        public ExaminationVO getExaminationVO(ElectiveCourseVO electiveCourseVO);
}
